package com.example.kotlindemo.demo

/**
 * Author:zs
 *Date:2022/8/9 15:21
 *
 *Unit3
 *describe：条件控制语句
 * 1.if 表达式
 * 2.区间使用
 * 3.when的使用
 **/
class Unit3 {
    /**
     * if 表达式
     * 1.传统的写法
     * 2.可以将IF表达式的结果赋值给一个变量
     * 3.简化写法
     */
    fun ifFUn() {
//      传统写法
        var a = 1;
        var b = 2;
        var max = 0;
        if (a > b) max = a
        println(max)
//        使用else
        if (a > b) {
            max = a
        } else {
            max = b
        }
        println(max)
//        作为表达式
        max = if (a > b) a else b
        println(max)
    }

    /**
     * 使用区间
     * 1.使用in字符来检测后某个数字是否在区间内
     */
    fun inFun(num: Int) {
        var arr: Array<Int> = Array(1000, { x -> 2 * x })
        var i = if (num in arr) 10 * num else 0
        println(i)
    }

    /**
     * when
     * 1.它的参数和所有的分支条件依次比较，知道符合条件为止
     * 2.when了可以被用来当做表达式，他所符合条件的值就是该表达式的整体值
     * 3.完成switch case的操作
     */
    fun whenFun(num: Int) {
//        完成switch ..case的操作
        when (num) {
            1 -> println("input == 1")
            2 -> println("input == 2")
            else -> println("没有猜中")//这里的else类似于java中的default
        }
//        当做表达式
        var a: Int = when (num) {
            1 -> num + 1
            else -> 0
        }
        fun funA(x: Int) = when (x) {
            12 -> println("12") //依次判断数值
            1, 2, 3, 4, 5, 6 -> println("in 1..5")//将多个条件写在一起使用 , 分开
            in 1..100 -> println("在1到100的范围内")//使用in字符作为条件
            is Int -> println("是Int型数据")//使用is字符作为条件
            else -> {
                println("otherwise")
            }
        }
        funA(13)//执行方法
//        替代if .. else
        when {
            num > 12 -> println("num > 12")
            num in 1..100 -> println("num is in 1..100")
            else -> println("输入的数字小于12")
        }
    }


}